<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #content {
            width: 100px;
            height: 20px;
            border: 1px solid darkgoldenrod;
        }
    </style>
</head>

<body>
    <!-- <button ontouchstart="getRecoder();">录音</button>
    <button ontouchend="stopRecord();">结束录音</button> -->
    <br>
    <button onclick="startRecoder();">录音</button>
    <button onclick="stopRecord();">结束录音</button>
    <!-- <button onclick="wx.uploadVoice();">上传录音</button> -->
    <button onclick="playVoice();">播放录音</button>
    <p id="content"></p>
</body>
<script src="https://unpkg.com/axios@0.18.0/dist/axios.min.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
<script>
    var vConsole = new VConsole();
    // 为给定 ID 的 user 创建请求
    axios.get('http://api2.ai.xdf.cn/api/jssdkGet')
        .then(function (response) {
            var res = response.data.body
            // console.log(res);
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: res.appId, // 必填，公众号的唯一标识
                timestamp: res.timestamp, // 必填，生成签名的时间戳
                nonceStr: res.nonceStr, // 必填，生成签名的随机串
                signature: res.signature,// 必填，签名
                jsApiList: res.jsApiList // 必填，需要使用的JS接口列表
            });
        })
        .catch(function (error) {
            console.log(error);
        });

    var localId;
    wx.ready(function () {
        wx.onVoiceRecordEnd({
            // 录音时间超过一分钟没有停止的时候会执行 complete 回调
            complete: function (res) {
                localId = res.localId;
            }
        });
        wx.playVoice({
            localId: localId // 需要播放的音频的本地ID，由stopRecord接口获得
        });
    });

    wx.startRecord({
        success: function () {
            console.log('开始录音');
            localStorage.rainAllowRecord = 'true';
        },
        cancel: function () {
            alert('用户拒绝授权录音');
        }
    });

    wx.stopRecord({
        success: function (res) {
            console.log(res);
            localId = res.localId;
            wx.uploadVoice(localId);
            // uploadVoice();
        },
        fail: function (res) {
            alert(JSON.stringify(res));
        }
    });

    wx.uploadVoice({
        localId: localId, // 需要上传的音频的本地ID，由stopRecord接口获得
        isShowProgressTips: 1, // 默认为1，显示进度提示
        success: function (res) {
            console.log(res);
            var serverId = res.serverId; // 返回音频的服务器端ID
        }
    });
    function translateVoice(localId) {
        wx.translateVoice({
            localId: localId, // 需要识别的音频的本地Id，由录音相关接口获得
            isShowProgressTips: 1, // 默认为1，显示进度提示
            success: function (res) {
                console.log(res.translateResult); // 语音识别的结果
                document.getElementById('content').innerText = res.translateResult;
                axios({
                    method: 'post',
                    url: 'http://api2.ai.xdf.cn/api/keysearch',
                    data: {
                        'school_id': 39,
                        'room_id': 22,
                        'date': '2018-12-20 00:00:00',
                        'text': res.translateResult,
                    },
                    dataType: "json"
                }).then(function (response) {
                    console.log(response);
                })
                    .catch(function (error) {
                        console.log(error);
                    });
            },
            fail: function (res) {
                console.log('translatevoice error:' + res);
            }
        });
    }

    wx.error(function (res) {
        // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
    });

    var recordTimer, voice;
    function startRecoder(event) {
        START = new Date().getTime();
        console.log('start record');
        recordTimer = setTimeout(function () {
            wx.startRecord({
                success: function () {
                    localStorage.rainAllowRecord = 'true';
                },
                cancel: function () {
                    alert('用户拒绝授权录音');
                }
            });
        }, 300);
    }

    function stopRecord(event) {
        END = new Date().getTime();
        if ((END - START) < 300) {
            END = 0;
            START = 0;
            //小于300ms，不录音
            clearTimeout(recordTimer);
        } else {
            console.log('end record');
            wx.stopRecord({
                success: function (res) {
                    console.log('end record1111');

                    console.log(res);
                    localId = res.localId;
                    translateVoice(localId);
                    // uploadVoice(localId);
                },
                fail: function (res) {
                    alert(JSON.stringify(res));
                }
            });
        }
    }

    function playVoice() {
        if (localId) {
            wx.playVoice({
                localId: localId // 需要播放的音频的本地ID，由stopRecord接口获得
            });
        } else {
            console.log('请录音');
        }
    }
</script>

</html>